<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>
    <title></title>
</head>
<body>
<script type="text/javascript" src="sw_define-min-1.0.1.js"></script>
<script type="text/javascript">
    /*
    * sw_define是一个方法注册工具，它可以将你的一堆脚本与一个字符串绑定。存储在全局容器中。
    *
    * sw_execute是一个只能读一次方法的工具，它会根据字符串从全局容器中查找对应脚本，并执行它，最后，它会从全局容器中将这段字符串联通其对应的脚本去掉。
    *
    * sw_always是一个可以读若干次方法的工具，原理跟sw_execute差不多，就是全局不会将其删除掉。
    *
    * 这里使用的时候需要注意以下几点：
    * 1.sw_define使用时 需要有字符串声明，不写的话，默认是main。
    *
    * 2.main的初衷是为了让每一个页面有一个唯一的主脚本，我们会在框架的最后统一执行main方法，所以对应每个页面的主脚本，可以不起名字，使用默认main。
    *
    * 3.如果使用sw_define连续定义同名的方法，那后者是不能覆盖前者的，只有当把第一个定义的执行掉，才能继续绑定同名的方法，继续执行。
    *
    * 4.1.0.1版本新增了sw_always方法，它跟sw_execute类似，它可以在sw_define注册之后，反复执行若干次，这个主要是为了满足脚本之间的小方法的共享
    *
    * 5.sw_always的第二个参数是一个数组，它是你之前注册的方法需要传入的哪些参数，在sw_always中需要用数组方式书写，且顺序跟分、注册方法的参数一致。
    *
    * 6.关于书写sw_always的公共方法，需要将结果通过return返回，其他sw_define里的参数才能接到。
    *
    * 7.sw_define的初衷是为了规范前端脚本的书写，其实很多插件已经有这方面的实践，我的入口点：两点，1.简洁且功能唯一。2.尽量头部少引脚本。
    *
    * 8.1.0.1版本处于测试阶段，如果发现bug或有新的需求建议，都可以联系我
    * */

     sw_define('main',function(){
        console.log('第一次声明');
    });

    sw_execute('main');
    sw_define('main',function(){
        console.log('第二次声明');
    });
    sw_execute('main');
    //自定义方法
    sw_define('getName',function(age,name){
        return '我叫' + name + ',年龄' + age;
    });
    sw_define('findMine',function(callback){
        return callback();
    });
    sw_define('A-project',function(){
        var content = sw_always('getName',['25','杨成']);
        console.log(content);
        console.log(sw_always('findMine',[function(){
            return '我是程序员';
        }]));
    });
    sw_define('B-project',function(){
        var content = sw_always('getName',['25','妮妮']);
        console.log(content);
    });
    sw_execute('A-project');
    sw_execute('B-project');
</script>
</body>
</html>